popover: Only destroy arrow render node if position changed
authorTimm Bäder <mail@baedert.org>
Thu, 10 Sep 2020 04:02:34 +0000 (06:02 +0200)
committerTimm Bäder <mail@baedert.org>
Tue, 15 Sep 2020 03:21:54 +0000 (05:21 +0200)
gtk/gtkpopover.c

index 5130d68ede392ac41395bec7acbe9915b8c11a55..fd3567d8e275b95b2508763963873ded60d86814 100644 (file)
@@ -414,14 +414,16 @@ update_popover_layout (GtkPopover     *popover,
     }
 
   if (priv->final_position != position)
-    gtk_widget_queue_allocate (GTK_WIDGET (popover));
+    {
+      gtk_widget_queue_allocate (GTK_WIDGET (popover));
+      g_clear_pointer (&priv->arrow_render_node, gsk_render_node_unref);
+    }
 
   gtk_widget_allocate (GTK_WIDGET (popover),
                        gdk_surface_get_width (priv->surface),
                        gdk_surface_get_height (priv->surface),
                        -1, NULL);
 
-  g_clear_pointer (&priv->arrow_render_node, gsk_render_node_unref);
   gtk_widget_queue_draw (GTK_WIDGET (popover));
 }